package com.example.ossdemo.util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Component;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class OSSUtil {
    // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    static String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
    static String accessKeyId = "LTAI5t8Bysc6H7fUCiXWVBHL";
    static String accessKeySecret = "H1xr8O6a3iorB963Yqn2Naozo29eKO";
    // 填写Bucket名称。
    static String bucketName = "soec1";
    // 填写Object的完整路径。Object完整路径中不能包含Bucket名称。
    static String objectName = "soec/6.png";


    public  static void down() throws IOException {
// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
        OSSObject ossObject = ossClient.getObject(bucketName, objectName);

        InputStream in = ossObject.getObjectContent();
        FileOutputStream fout=new FileOutputStream("d:\\yasuo");

        byte[]   b=new  byte[1024];
        int  i=in.read(b);
        while(i!=-1){
            fout.write(b,0,i);
            i=in.read(b);
        }

// 数据读取完成后，获取的流必须关闭，否则会造成连接泄漏，导致请求无连接可用，程序无法正常工作。
        fout.close();
        in.close();

// 关闭OSSClient。
        ossClient.shutdown();
    }


    public static void main(String[] args) throws IOException {
////        down();
//        OSSUtil3 ossUtil3;
//        ossUtil3=new OSSUtil3();
//        ossUtil3.getUrl("d://1.png");
//        ApplicationContext context = new AnnotationConfigApplicationContext(OSSUtil3.class);
//        String getUrl = (String) context.getBean("getUrl");

    }
}
